This section is intended to introduce the reader to various aspects of art, which may be related to various aspects of the present invention that are described and/or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present invention. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
It has long been known in the art, e.g. in U.S. Pat. No. 5,386,469 and U.S. Pat. No. 6,345,359, to protect software code by encryption and to decrypt it instruction by instruction only when it is to be executed. A drawback of these systems is that it is relatively easy for hackers to modify instructions to see what happens.
In order to overcome this drawback, US 2005/108507 proposes to scramble the basic blocks of the code and ensure the integrity by generating a signature. A drawback of this solution is that on a hacked system that does not care about the integrity, it is still possible to substitute instructions when trying to hack the system.
It will therefore be appreciated that there is a need for a software encryption solution that overcomes at least some of the drawbacks of the prior art. This invention provides such a solution.